package com.smartboot.plus.vo;

import com.alibaba.fastjson2.annotation.JSONField;

import java.io.Serializable;
import java.sql.Timestamp;

public class MqttAuthCacheVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户 ID（主键），用于唯一标识一个用户。
     */
    private String id;

    /**
     * 用户名，用户登录时使用的名称。
     */
    private String username;

    /**
     * 密码（加密存储），存储用户密码的加密值。
     */
    private String password;

    /**
     * 密码盐（salt），用于增强密码的安全性，通常是一个随机生成的字符串（如 UUID）。
     */
    private String salt;

    /**
     * 加密方式，指定密码加密所使用的算法，例如 "sha256" 或 "sha512"。
     */
    private String encryptionType;

    /**
     * 加盐方式，指定盐值在密码中的位置，例如 "prefix"（前缀）或 "suffix"（后缀）。
     */
    private String saltType;

    /**
     * 修改时间，记录用户信息最后修改的时间戳。
     * 格式为 "yyyy-MM-dd HH:mm:ss"。
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Timestamp updatedAt;

    /**
     * 创建时间，记录用户信息创建的时间戳。
     * 格式为 "yyyy-MM-dd HH:mm:ss"。
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Timestamp createdAt;

    /**
     * 用户状态，0 表示启用，1 表示未启用。
     */
    private Integer status;

    /**
     * 备注信息，用于存储用户相关的额外说明或备注。
     */
    private String remark;

    /**
     * 删除状态，0 表示未删除，1 表示已删除。
     */
    private Integer isDeleted;


    // Getter and Setter for id
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    // Getter and Setter for username
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    // Getter and Setter for password
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    // Getter and Setter for salt
    public String getSalt() {
        return salt;
    }

    public void setSalt(String salt) {
        this.salt = salt;
    }

    // Getter and Setter for encryptionType
    public String getEncryptionType() {
        return encryptionType;
    }

    public void setEncryptionType(String encryptionType) {
        this.encryptionType = encryptionType;
    }

    // Getter and Setter for saltType
    public String getSaltType() {
        return saltType;
    }

    public void setSaltType(String saltType) {
        this.saltType = saltType;
    }

    // Getter and Setter for updatedAt
    public java.sql.Timestamp getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(java.sql.Timestamp updatedAt) {
        this.updatedAt = updatedAt;
    }

    // Getter and Setter for createdAt
    public java.sql.Timestamp getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(java.sql.Timestamp createdAt) {
        this.createdAt = createdAt;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(Integer isDeleted) {
        this.isDeleted = isDeleted;
    }


    public Integer getStatus() {
        return status;
    }


    public void setStatus(Integer status) {
        this.status = status;
    }


}
